package text111;

import java.util.LinkedList;

public class Solution22 {
	 public int lengthOfLongestSubstring(String s) {
		 // 存放不含重复字符的子字符，由于后续会进行大量的删除操作，LinkedList 会是一个不错的选择
	        LinkedList<Character> subStr = new LinkedList<>();
	        int maxLen = 0;// 记录不含重复字符的最大子字符的长度
	        for(int i = 0; i < s.length(); i++){
	            char c = s.charAt(i);
	            if(subStr.contains(c)){// 如果子字符中已经有当前字符，则将子字符串中的 这个字符中的前面所有字符 删除
	                remove(subStr,subStr.indexOf(c));
	            }
	            // 将当前字符加入子字符串
	            subStr.add(c);
	            maxLen = Math.max(maxLen,subStr.size()); // 更新最大子字符串的长度
	        }
	        return maxLen;
	    }
	    // 删除 list[0,end] 中的字符
	    private void remove(LinkedList<Character> list,int end){
	        for(int i = 0; i <= end; i++){
	            list.remove(0);
	        }

	    }
}
